Memory modules coupled with computing platforms or systems such as those configured as a server may include dual in-line memory modules (DIMMs). DIMMs may include types of volatile memory such dynamic random access memory (DRAM). As DRAM technologies have advanced to include memory cells having higher and higher densities, memory capacities for DIMMs have also substantially increased. Since DRAM is a volatile memory, power failures or resets may result in loss of most if not all data maintained in DRAM at the time of power failure or reset. Also, large memory capacities for DRAMs presents a challenge for an operating system (OS) or an application (e.g., device driver) to sense a power failure and attempt to prevent or reduce data loss.
In order to mitigate or reduce data loss in the event of a power failure or reset, a type of memory module that includes both volatile and non-volatile memory has been developed. This type of memory module is commonly referred to as a non-volatile DIMM (NVDIMM). Typically, NVDIMMs are a combination of DRAM and NAND flash. NVDIMMs may provide persistent storage by backing up DRAM contents in a non-volatile memory such as NAND flash in event of a power failure or sudden system reset. A super-capacitor package may be coupled with an NVDIMM to maintain power to the NVDIMM for long enough to back-up data from the DRAM to the non-volatile memory.
An NVDIMM may have a controller resident on or with the NVDIMM to manage or control NVDIMM activities. The NVDIMM controller may manage saving of DRAM contents to non-volatile memory at the NVDIMN. The NVDIMM controller may also manage restoration of the DRAM contents from the non-volatile memory back to the DRAM once system power has been restored. The NVDIMM controller may be arranged to operate in coordination with an OS, device driver, application or basic input/output system (BIOS) for a computing platform coupled with the NVDIMM to save or restore DRAM contents.